﻿///////////////////////////////////////////////////////////////////////////////
// File:        LockGuard.hpp
// Author:      671643387@qq.com
// Description:
///////////////////////////////////////////////////////////////////////////////

#ifndef NIO_BASE_LOCKGUARD_HPP_
#define NIO_BASE_LOCKGUARD_HPP_

#if defined(_MSC_VER) && (_MSC_VER >= 1200)
# pragma once
#endif

#include <boost/noncopyable.hpp>

namespace nio
{
    namespace base
    {
        template<typename T>
        class LockGuard : public boost::noncopyable
        {
        public:
            LockGuard(T& x)
                : x_(x)
            {
                x_.lock();
            }
            ~LockGuard(void)
            {
                x_.unlock();
            }
        private:
            T& x_;
        };
    }
}

#endif //NIO_BASE_LOCKGUARD_HPP_
